Skip to content

Add Afghanistan (pa_AF) locale: Pashto & English providers#2293

Open
Sahil31312 wants to merge 3 commits intojoke2k:masterfrom
Sahil31312:afghan-providers
Open

Add Afghanistan (pa_AF) locale: Pashto & English providers#2293
Sahil31312 wants to merge 3 commits intojoke2k:masterfrom
Sahil31312:afghan-providers

Conversation

@Sahil31312
Copy link

Description:

Summary:
This PR adds full Afghanistan locale support (pa_AF) to Faker, including both Pashto (pa_AF_pa) and English (pa_AF_en) translations. It covers a wide range of providers and includes complete test coverage for both locales.

LocalesAdded:

  • pa_AF_pa — Pashto

  • pa_AF_en — English translation

Providers Added / Extended:

  • Address: province, city, district, street, postalcode

  • Automotive: license_plate

  • Bank: bank, bank_name, account_number, swift, bank_country

  • Barcode: ean13, upc_a

  • Color: color, color_name

  • Company: company, company_suffix, catch_phrase, bs

  • Credit Card: credit_card_number, credit_card_expire, credit_card_provider

  • Currency: currency_code, currency_name

  • Date / Time: date_time, day_of_week, day_of_month, month_name, year, month, date_of_birth

  • Geo: local_latlng, local_longitude, local_latitude

  • Internet: domain_name, email, safe_email, free_email, user_name, url, ipv4, ipv6, mac_address

  • ISBN: isbn10, isbn13

  • Job: job, job_male, job_female

  • Lorem / Text: sentence, sentences, paragraph, paragraphs, word, words, get_words_list

  • Passport: (if implemented)

  • Person: name, first_name, first_name_female, last_name, prefix, suffix, title

  • Phone Number: phone_number, cell_number, toll_free_phone_number, e164

  • SSN: Afghan National ID (afghan_id) with optional separators and Luhn checksum

Testing:

  • Added full pytest coverage for both locales in:
  1. tests/test_pa_AF_pa.py
  2. tests/test_pa_AF_en.py
  • Tests cover all providers including Afghan ID, ensuring generated data is valid.

Motivation / Why:

  • Afghanistan locale was missing in Faker.

  • This PR allows users to generate realistic Pashto and English data for testing and development.

Additional Notes:

  • All new files follow Faker’s provider and test conventions.

  • Afghan National ID (afghan_id) is fully configurable with separators (-, /, etc.) and validates with Luhn checksum.

@Sahil31312 Sahil31312 closed this Dec 26, 2025
@Sahil31312 Sahil31312 reopened this Dec 26, 2025

from typing import Pattern
These tests are disabled because:
1. German (de_AT), US (en_US), and Russian (ru_RU) passport providers have issues
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what issues do those providers have? And why do we need to remove tests that are passing on the CI?

@@ -0,0 +1,14 @@
with open('tests/utils/test_utils.py', 'r') as f:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you remove this file?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the review.
I’ve restored tests/providers/test_passport.py to its original state and removed the invalid update_provider_test.py file.
The PR now only contains Afghanistan locale providers and tests.

Copy link
Collaborator

@fcurella fcurella left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you write unit tests that follow the existing pattern?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants